﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
namespace webnew.BLL
{
    /// <summary>
    /// 业务逻辑类 Sys_User
    /// </summary>
   public  class Sys_User
    {
       private readonly webnew.DAL.Sys_UserHelper dal = new webnew.DAL.Sys_UserHelper();
        public Sys_User()
        { }

        /// <summary>
        /// 增加一条数据
        /// </summary>
        public string Add(webnew.Model.Sys_UserInfo model, List<Model.Sys_UserRoleInfo> lstRole)
        {
            CheckModel(model);
            return  dal.Add(model,lstRole);
        }


        /// <summary>
        /// 更新一条数据
        /// </summary>
        public int Modify(webnew.Model.Sys_UserInfo model, List<Model.Sys_UserRoleInfo> lstRole)
        {
            CheckModel(model);
            return  dal.Modify(model,lstRole);
        }

        /// <summary>
        /// 根据ID获取一个实体
        /// </summary>
        public Model.Sys_UserInfo GetModel(string id)
        {
            return dal.GetModel(id);
        }

        /// <summary>
        /// 根据用户名获取一个实体
        /// </summary>
        public Model.Sys_UserInfo GetLogModel(string Loginid)
        {
            return dal.GetLogModel(Loginid);
        }

     
       /// <summary>
       /// 修改用户密码
       /// </summary>
       /// <param name="model"></param>
       /// <returns></returns>
        public int updatePwd(webnew.Model.Sys_UserInfo model)
        {
            return dal.updatePwd(model);
        }
        /// <summary>
        /// 修改用户备注
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public int updateremark(string hostname,string id)
        {
            return dal.updateremark(hostname,id);
        }
        ///// <summary>
        ///// 根据单位名和职称获取用户列表
        ///// </summary>
        //public List<RMS.Model.Sys_UserInfo> GetListByRegionID(int RegionID, string PositionName)
        //{
        //    return dal.GetListByRegionID(RegionID, PositionName);
        //}

        public int updateLoginDate(string id)
        {
            return dal.updateLoginDate(id);
        }

        /// <summary>
        /// 根据部门ID获取人员列表
        /// </summary>
        public List<webnew.Model.Sys_UserInfo> GetListByDeptID(string DeptID)
        {
            return dal.GetListByDeptID(DeptID);
        }

        /// <summary>
        /// 取得数据行数,不建议直接使用此方法,请根据业务逻辑重写
        /// </summary>
        public int GetCount(string strTable,string condition)
        {
            return dal.GetCount(strTable,condition);
        }


        public SqlDataReader GetPageList(string field,string condition, int pageSize, int pageIndex, string tbNames, string sortNames, bool sortType)
        {
            if (pageSize <= 0)
                throw new Exception("每页数据条数必须大于0。");

            if (pageIndex <= 0)
                throw new Exception("页索引必须大于0。");

            if (string.IsNullOrEmpty(sortNames))
                throw new Exception("排序字段不能为空。如果是默认排序，可以填写主键字段。");
            return dal.GetPageList(field,condition, pageSize, pageIndex, tbNames, sortNames, sortType);
        }


        /// <summary>
        /// 根据单位表ID获取该部门员工的用户信息
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public List<webnew.Model.Sys_UserInfo> GetListByCompID(string compID)
        {
            return dal.GetListByCompID(compID);
        }


        /// <summary>
        /// 根据用户名 查找数据库是否存在该用户
        /// </summary>
        /// <param name="strLoginId">输入的用户</param>
        /// <returns>返回string "1"代表存在,"0"代表不存在</returns>
        public string ExistLoginId(string strLoginId)
        {
            return dal.ExistLoginId(strLoginId);
        }


        /// <summary>
        /// 导出Excel获取列表数据(带条件的)
        /// </summary>
        public SqlDataReader GetExcelList(string strFeild, string strTable, string condition)
        {
            return dal.GetExcelList(strFeild, strTable, condition);
        }


        /// <summary>
        /// 根据角色ID获取该角色下的所有用户
        /// </summary>
        public SqlDataReader GetUserListByRoleId(string strRoleId)
        {
            return dal.GetUserListByRoleId(strRoleId);
        }


        /// <summary>
        /// 根据Id 查找数据库该用户密码是否已超过三个月未修改
        /// </summary>
        /// <param name="strId">Id</param>
        /// <returns>返回string "1"代表是,"0"代表否</returns>
        public string ExistUpdatePwdTime(string strId)
        {
            return dal.ExistUpdatePwdTime(strId);
        }

        /// <summary>
        /// 根据ID停用该用户
        /// </summary>
        public int LockUser(string id)
        {
            return dal.LockUser(id);
        }

        /// <summary>
        /// 根据用户ID,密码 判断最近5个密码记录中是否含有相同的密码,是返回1 否返回0
        /// </summary>
        /// <param name="strLoginId">用户ID</param>
        /// <param name="strPassWord">密码</param>
        /// <returns></returns>
        public string ExistPwdRecord(string strLoginId, string strPassWord)
        {
            return dal.ExistPwdRecord(strLoginId, strPassWord);
        }

        /// <summary>
        /// 把原始密码更新为MD5加密密码(过渡时期使用)
        /// </summary>
        /// <returns></returns>
        public string UpdateMd5Pwd()
        {
            return dal.UpdateMd5Pwd();
        }

        #region 验证参数的有效性，请在此加入更多业务逻辑的验证

        /// <summary>
        /// 验证实体的有效性
        /// </summary>
        private void CheckModel(webnew.Model.Sys_UserInfo model)
        {
            if (model == null)
                throw new ArgumentNullException("参数不能为空。");

            if (!Regex.IsMatch(model.truename, @"^[\s\w\u4e00-\u9fa5]{1,50}$"))
                throw new ArgumentException("TrueName格式不正确。");
        }



        /// <summary>
        /// 验证条件参数的有效性
        /// </summary>
        private void CheckConditionArgument(int ID)
        {
        }

        #endregion
    }
}
